/** 
 * Project Name:qfhy 
 * File Name:BaseServiceImpl.java 
 * Package Name:com.wf.qfhy.service.impl 
 * Date:2017年4月26日上午11:12:24 
 * Copyright (c) 2017, wxwj All Rights Reserved. 
 */

package com.wf.qfhy.service.impl;

import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;

import com.wf.qfhy.dao.IBaseDao;
import com.wf.qfhy.service.IBaseService;

/**
 * @ClassName: BaseServiceImpl
 * @Description:
 * @author 王飞
 * @date 2017年4月26日 上午11:12:24
 * 
 */
@Transactional(rollbackFor = Throwable.class)
public abstract class BaseService implements IBaseService {

	/**
	 * 业务层使用哪个Dao，由各个业务层确认
	 * 
	 * @return
	 */
	public abstract <T> IBaseDao<T> getBaseDao();

	/**
	 * 保存或者更新
	 */
	public <T> void saveOrUpdate(T o) {
		Object entity = null;
		try {
			entity = getBaseDao().getEntityClass().newInstance();
			BeanUtils.copyProperties(o, entity);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
		getBaseDao().saveOrUpdate(entity);
	}

}
